<?php
require_once("PersonaDAO.php");
require_once("Connection.php");
require_once("Persona.php");

class PersonaDaoIMP implements PersonaDao
{	
	private $coleccion=null;

	public function listarAmigos($persona){
		$db = Connection::getConnection();
		$rpta = null;
		$amigosEmails=null;
		$id = $persona->getEmail();
		if($db){
			$this->coleccion = $db->Persona;
			$js = "function(){ return this._id=='".$persona->getEmail()."'}";
			$rpta = $this->coleccion->find(array('$where'=>$js));
			$arr = iterator_to_array($rpta);
			if(array_key_exists('Amigos', $arr[$persona->getEmail()])){
				$amigosEmails = $arr[$persona->getEmail()]["Amigos"];
			}
		}			
		return $amigosEmails;
	}

	public function verAmigo($persona){
		$db = Connection::getConnection();
		$rpta = null;
		$id = $persona->getEmail();
		if($db){
			$this->coleccion = $db->Persona;
			$rpta = $this->coleccion->findOne(array('_id'=>$persona->getEmail()));
		}			
		if(!is_null($rpta)){
			$p = new Persona();
			$p->setEmail($rpta["_id"]);
			$p->setNombres($rpta["Nombres"]);
			$p->setApellidos($rpta["Apellidos"]);
			$p->setTelefono($rpta["Telefono"]);
			$date=new MongoDate();
			$date = $rpta["FNac"];
			$p->setFNac(date('Y-M-d h:i:s', $date->sec));
			$p->setOcupacion($rpta["Ocupacion"]);
			$p->setDescripcion($rpta["Descripcion"]);
			$p->setFoto($rpta["_id"]);
			if(array_key_exists('Amigos', $rpta))
				$p->setAmigos($rpta["Amigos"]);
			return $p;
		}
		else{
			return null;
		}
	}

	public function todasLasPersonas(){
		$db = Connection::getConnection();
		$rpta = null;
		if($db){
			$this->coleccion = $db->Persona;
			$rpta = $this->coleccion->find();
			foreach ($rpta as $k) {
				echo $k["_id"];
			}
		}			
		return $rpta;	
	}

	public function checkLogin($persona){
		$db = Connection::getConnection();
		$this->colleccion = $db->Persona;
		$js = "function() {
			return this._id == '".$persona->getEmail()."' && this.Password == '". $persona->getPassword()."';
		}";

		echo $js;
		$arr = $this->colleccion->findOne(array('$where' => $js));
		if(is_null($arr)){
			echo "ES NULO";
			return(null);
		}
		else{
			$persona->setNombres($arr["Nombres"]);
			$persona->setApellidos($arr["Apellidos"]);
			$persona->setTelefono($arr["Telefono"]);
			$date=new MongoDate();
			$date = $arr["FNac"];
			$persona->setFNac(date('Y-M-d h:i:s', $date->sec));
			$persona->setOcupacion($arr["Ocupacion"]);
			$persona->setDescripcion($arr["Descripcion"]);
			$persona->setFoto($arr["_id"]);
			return ($persona);
		}
	}

	public function agregarAmigo($persona1, $persona2)//retorna boolean recibe 2 amigos
	{
		$db = Connection::getConnection();
		$this->colleccion = $db->Persona;
		$filter = array('_id'=>$persona1->getEmail());
		$update = array('$push'=>array('Amigos'=>$persona2->getEmail()));
		if($this->colleccion->update($filter,$update)){
			return true;
		}	
		else{
			return false;
		}
	}	

}
?>